/*
 * @lc app=leetcode.cn id=454 lang=cpp
 *
 * [454] 四数相加 II
 */

// @lc code=start
class Solution
{
public:
    int fourSumCount(vector<int> &nums1, vector<int> &nums2, vector<int> &nums3, vector<int> &nums4)
    {
        //第一眼看上去是个三数之和的翻版 就是将target换成某个数组的各个值
        //好吧差了很多  分成两个两数之和来算
        unordered_map<int, int> m;
        //统计nums1和nums2相加和的次数
        for (int a : nums1)
        {
            for (int b : nums2)
            {
                m[a + b]++;
            }
        }
        int res = 0;
        for (int c : nums3)
        {
            for (int d : nums4)
            {
                if (m.find(0 - c - d) != m.end())
                {
                    res += m[0 - c - d];
                }
            }
        }
        return res;
    }
};
// @lc code=end

